const Koa = require('koa');
const app = new Koa();

app.use(async (ctx) => {
    // 1. 请求相关参数
    console.log('请求相关参数:');
    // 请求方法
    console.log('请求方法:', ctx.method);
    // 请求路径
    console.log('请求路径:', ctx.path);
    // 请求 URL
    console.log('请求 URL:', ctx.url);
    // 请求查询字符串
    console.log('请求查询字符串:', ctx.querystring);
    // 请求查询对象
    console.log('请求查询对象:', ctx.query);
    // 请求头
    console.log('请求头:', ctx.headers);
    // 请求体（需要使用中间件解析，这里简单示意）
    if (ctx.method === 'POST') {
        // 假设使用 koa-bodyparser 中间件解析请求体
        console.log('请求体:', ctx.request.body);
    }

    // 2. 响应相关参数
    console.log('\n响应相关参数:');
    // 设置响应状态码
    ctx.status = 200;
    console.log('响应状态码:', ctx.status);
    // 设置响应头
    ctx.set('Content-Type', 'text/plain');
    console.log('响应头:', ctx.response.headers);
    // 设置响应体
    ctx.body = 'Hello, Koa!';
    console.log('响应体:', ctx.body);

    // 3. 其他常用属性
    console.log('\n其他常用属性:');
    // 协议
    console.log('协议:', ctx.protocol);
    // 是否为安全连接（HTTPS）
    console.log('是否为安全连接:', ctx.secure);
    // IP 地址
    console.log('客户端 IP 地址:', ctx.ip);
    // 主机名
    console.log('主机名:', ctx.host);
});

const port = 3000;
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});